/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.sql;

/**
 *
 * @author andrew
 */
public class SQLOrdenCompra {


    public static final String getEstado="SELECT estado_oc from orden_compra where id_oc=?";
    public static final String ingresarEncaOrdenCompra = "INSERT INTO ORDEN_COMPRA (id_u, id_em, id_p, fecha_oc, codigo_s, tipo_oc, percepcion_oc, bloque_oc, numero_oc, estado_oc, fechahora) VALUES(?,?,?,?,?,?,?,?,?,?, now())";
    public static final String ultimoIdOrdenCompra = "SELECT max(id_oc) as id_oc FROM ORDEN_COMPRA";

    /*detalle orden compra*/
    public static final String insertarDetaOrdenCompra = "INSERT INTO DETA_ORDEN_COMPRA (id_dm, id_oc, cantidad_d, costo_d, iva_d, descuento_d, porcentaje_descuento_d, exento_d) VALUES(?,?,?,?,?,?,?,?)";
    public static final String updateDetaOrdenCompra = "UPDATE DETA_ORDEN_COMPRA SET id_dm=?, id_oc=?, cantidad_d=?, costo_d=?, iva_d=?, descuento_d=?, porcentaje_descuento_d=?, exento_d=? WHERE id_d=? ";

    /*actualizando el estado 'P' (pendiente) del detalle de solicitud al estado 'A' (aprobado)*/
    public static final String actualizaDetalleSolicitud = "UPDATE DETALLE_SOLICITUD SET estado_d='A' WHERE id_d=? ";
    public static final String aprobarOrdenCompra = "UPDATE ORDEN_COMPRA SET estado_oc='A' WHERE id_oc=? ";
    public static final String denegarOrdenCompra = "UPDATE ORDEN_COMPRA SET estado_oc='D' WHERE id_oc=? ";
    public static final String actualizaDetaOrdenCompra = "UPDATE DETA_ORDEN_COMPRA SET cantidad_d=?, costo_d=?, iva_d=?, descuento_d=? WHERE id_d=?";
    /*lista para compras */
    public static final String buscarOrdenes = "SELECT oc.id_oc, oc.id_em,  oc.id_p, oc.fecha_oc, oc.numero_oc, p.empresa_p, e.nombre_em, oc.fechahora FROM orden_compra as oc, proveedor as p, empresa as e WHERE oc.id_em = e.id_em AND oc.id_p = p.id_p AND oc.estado_oc='P' ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String buscarDetaOrdenes = "SELECT doc.id_oc, doc.id_d, doc.cantidad_d, doc.iva_d, doc.descuento_d, doc.costo_d, m.nombre_m, doc.exento_d FROM deta_orden_compra as doc, orden_compra as oc, material_sucursal as dm, material as m WHERE doc.id_oc = oc.id_oc AND doc.id_dm = dm.id_dm AND dm.id_m = m.id_m AND doc.id_oc=?";
    /*Querys para Consulta de Orden de compra*/
    public static final String consultaOrdenCompra_2Fechas_y_Proveedor = "SELECT oc.id_oc, oc.id_em,  oc.id_p, oc.fecha_oc, oc.numero_oc, p.empresa_p, e.id_em, e.nombre_em, oc.fechahora, oc.estado_oc, oc.tipo_oc, oc.percepcion_oc FROM orden_compra as oc, proveedor as p, empresa as e WHERE oc.id_em = e.id_em AND oc.id_p = p.id_p AND oc.estado_oc<>'C' AND oc.fecha_oc BETWEEN ? AND ? AND p.empresa_p like ?  ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String consultaOrdenCompra_2Fechas = "SELECT oc.id_oc, oc.id_em,  oc.id_p, oc.fecha_oc, oc.numero_oc, p.empresa_p, e.id_em, e.nombre_em, oc.fechahora, oc.estado_oc, oc.tipo_oc, oc.percepcion_oc FROM orden_compra as oc, proveedor as p, empresa as e WHERE oc.id_em = e.id_em AND oc.id_p = p.id_p AND oc.estado_oc<>'C' AND oc.fecha_oc BETWEEN ? AND ? ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String consultaOrdenCompra_FechaInicio = "SELECT oc.id_oc, oc.id_em,  oc.id_p, oc.fecha_oc, oc.numero_oc, p.empresa_p, e.id_em, e.nombre_em, oc.fechahora, oc.estado_oc, oc.tipo_oc, oc.percepcion_oc FROM orden_compra as oc, proveedor as p, empresa as e WHERE oc.id_em = e.id_em AND oc.id_p = p.id_p AND oc.estado_oc<>'C' AND oc.fecha_oc >=? ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String consultaOrdenCompra_FechaInicio_y_Proveedor = "SELECT oc.id_oc, oc.id_em,  oc.id_p, oc.fecha_oc, oc.numero_oc, p.empresa_p, e.id_em, e.nombre_em, oc.fechahora, oc.estado_oc, oc.tipo_oc, oc.percepcion_oc FROM orden_compra as oc, proveedor as p, empresa as e WHERE oc.id_em = e.id_em AND oc.id_p = p.id_p AND oc.estado_oc<>'C' AND oc.fecha_oc >=? AND p.empresa_p like ? ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String consultaOrdenCompra_FechaFin = "SELECT oc.id_oc, oc.id_em,  oc.id_p, oc.fecha_oc, oc.numero_oc, p.empresa_p, e.id_em, e.nombre_em, oc.fechahora, oc.estado_oc, oc.tipo_oc, oc.percepcion_oc FROM orden_compra as oc, proveedor as p, empresa as e WHERE oc.id_em = e.id_em AND oc.id_p = p.id_p AND oc.estado_oc<>'C' AND oc.fecha_oc <=? ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String consultaOrdenCompra_FechaFin_y_Proveedor = "SELECT oc.id_oc, oc.id_em,  oc.id_p, oc.fecha_oc, oc.numero_oc, p.empresa_p, e.id_em, e.nombre_em, oc.fechahora, oc.estado_oc, oc.tipo_oc, oc.percepcion_oc FROM orden_compra as oc, proveedor as p, empresa as e WHERE oc.id_em = e.id_em AND oc.id_p = p.id_p AND oc.estado_oc<>'C' AND oc.fecha_oc <=? AND p.empresa_p like ? ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String consultaOrdenCompra_Proveedor = "SELECT oc.id_oc, oc.id_em,  oc.id_p, oc.fecha_oc, oc.numero_oc, p.empresa_p, e.id_em, e.nombre_em, oc.fechahora, oc.estado_oc, oc.tipo_oc, oc.percepcion_oc FROM orden_compra as oc, proveedor as p, empresa as e WHERE oc.id_em = e.id_em AND oc.id_p = p.id_p AND oc.estado_oc<>'C' AND p.empresa_p like ?  ORDER BY oc.numero_oc ,p.empresa_p";
    public static final String consultaOrdenCompra_All = "SELECT oc.id_oc, oc.id_em,  oc.id_p, e.nombre_em, p.empresa_p, oc.fecha_oc, oc.numero_oc, oc.fechahora, oc.percepcion_oc, oc.tipo_oc, oc.estado_oc FROM orden_compra oc, empresa e, proveedor p WHERE oc.id_p = p.id_p AND e.id_em = oc.id_em ORDER BY oc.numero_oc ,p.empresa_p";

    /*Querys para Modificar una Orden de compra*/
    public static final String buscarEncaOrdenCompra = "SELECT oc.id_oc, oc.id_em, oc.id_p, oc.fecha_oc, oc.numero_oc,oc.bloque_oc, p.empresa_p, p.aplicar_percepcion_p, p.nit_p, e.id_em, e.nombre_em, oc.fechahora, oc.estado_oc, oc.tipo_oc, oc.percepcion_oc FROM orden_compra as oc, proveedor as p, empresa as e WHERE  oc.id_em = e.id_em AND oc.id_p = p.id_p AND oc.id_oc=?";
    public static final String buscarDetaOrdenCompra = "SELECT doc.id_d, doc.id_dm, doc.cantidad_d, doc.costo_d, doc.iva_d, doc.descuento_d, doc.porcentaje_descuento_d, doc.exento_d, doc.id_oc, m.nombre_m FROM deta_orden_compra doc, material_sucursal ms, material m WHERE doc.id_dm = ms.id_dm AND ms.id_m = m.id_m AND doc.id_oc=?";
    public static final String modificarOrdenCompra = "UPDATE ORDEN_COMPRA SET id_em=?, id_p=?, fecha_oc=?, codigo_s=?, tipo_oc=?, percepcion_oc=?,bloque_oc=?, numero_oc=?  WHERE id_oc=?  ";

    /*Query para anular Orden de Compra  'C' de cancelado  */
    public static final String anularOrdenCompra = "UPDATE ORDEN_COMPRA SET estado_oc='C' WHERE id_oc=?";
    /*Cambiar el estado a OrdenCompra*/

    public static final String eliminarDetaOrdenCompraItem = "DELETE FROM DETA_ORDEN_COMPRA WHERE id_d=?";
    public static final String eliminarDetaOrdenCompra = "DELETE FROM DETA_ORDEN_COMPRA WHERE id_oc=?";
    public static final String eliminarEncaOrdenCompra = "DELETE FROM ORDEN_COMPRA WHERE id_oc=?";

    public static final String getConsulta_DetaOrdenCompra = "select d.*,m.nombre_m,m.id_m from DETA_ORDEN_COMPRA as d,MATERIAL as m,MATERIAL_SUCURSAL as ms  where m.id_m=ms.id_m and ms.id_dm=d.id_dm and d.id_oc=? order by d.id_d";
    public static final String cambiarEstadoOrdenCompra = "UPDATE ORDEN_COMPRA SET estado_oc=? WHERE id_oc=?";
    public static final String getMax = "SELECT max(id_oc) as max FROM ORDEN_COMPRA";
    public static final String getTotales_x_OrdenCompra =
            " select "
            + " COALESCE((oc.percepcion_oc),0) as total_percepcion, "
            + " COALESCE(sum(d.costo_d),0) as total_costo_cd, "
            + " COALESCE(sum(d.descuento_d),0) as total_descuento, "
            + " COALESCE(sum(d.iva_d),0) as total_iva, "
            + " COALESCE(sum(d.exento_d),0) as total_exento, "
            + " (COALESCE(sum(d.costo_d),0) + COALESCE(sum(d.descuento_d),0) ) as total_costo_sd, "
            + " COALESCE(sum( (d.cantidad_d*d.costo_d) + d.iva_d + d.exento_d),0) as sub_total_orden_compra, "
            + " COALESCE(sum((d.cantidad_d*d.costo_d) + d.iva_d + d.exento_d) + (oc.percepcion_oc),0) as total_orden_compra "
            + " from orden_compra as oc "
            + " left join deta_orden_compra as d on oc.id_oc=d.id_oc "
            + " where oc.id_oc=? "
            + " group by oc.percepcion_oc ";
}